#ifndef __UGUI_COLOR_CONVERT_H
#define __UGUI_COLOR_CONVERT_H

#include "ugui_config.h"
#include "ugui_colors.h"

/* 颜色转换函数：RGB565 转 BGR565 */
static inline UG_U16 UG_Color_RGB565_to_BGR565(UG_U16 rgb565)
{
    UG_U16 r = (rgb565 >> 11) & 0x1F;  // 提取红色分量 (5位)
    UG_U16 g = (rgb565 >> 5) & 0x3F;   // 提取绿色分量 (6位)
    UG_U16 b = rgb565 & 0x1F;          // 提取蓝色分量 (5位)
    
    // 重新组合为 BGR565 格式：B(5位) + G(6位) + R(5位)
    return ((b & 0x1F) << 11) | ((g & 0x3F) << 5) | (r & 0x1F);
}

/* 颜色转换函数：BGR565 转 RGB565 */
static inline UG_U16 UG_Color_BGR565_to_RGB565(UG_U16 bgr565)
{
    UG_U16 b = (bgr565 >> 11) & 0x1F;  // 提取蓝色分量 (5位)
    UG_U16 g = (bgr565 >> 5) & 0x3F;   // 提取绿色分量 (6位)
    UG_U16 r = bgr565 & 0x1F;          // 提取红色分量 (5位)
    
    // 重新组合为 RGB565 格式：R(5位) + G(6位) + B(5位)
    return ((r & 0x1F) << 11) | ((g & 0x3F) << 5) | (b & 0x1F);
}

/* 预定义的颜色转换宏 */
#define C_RGB565_TO_BGR565(color) UG_Color_RGB565_to_BGR565(color)
#define C_BGR565_TO_RGB565(color) UG_Color_BGR565_to_RGB565(color)

/* 常用颜色转换后的定义 */
#define C_BGR565_MEDIUM_BLUE      C_RGB565_TO_BGR565(C_MEDIUM_BLUE)
#define C_BGR565_BLUE             C_RGB565_TO_BGR565(C_BLUE)
#define C_BGR565_GREEN            C_RGB565_TO_BGR565(C_GREEN)
#define C_BGR565_RED              C_RGB565_TO_BGR565(C_RED)
#define C_BGR565_WHITE            C_RGB565_TO_BGR565(C_WHITE)
#define C_BGR565_BLACK            C_RGB565_TO_BGR565(C_BLACK)

#endif /* __UGUI_COLOR_CONVERT_H */ 